

package org.koyabr.webx.demo.danmaku.biz;

import java.util.List;

import org.koyabr.webx.demo.danmaku.dal.dataobjs.Danmaku;
import org.koyabr.webx.demo.danmaku.dal.dataobjs.Post;
import org.apache.commons.fileupload.FileItem;

/**
 * 管理和投稿相关的操作
 *
 */
public interface PostManager {

    /**
     * 添加一条弹幕
     * @param danmaku 用户发送的新弹幕
     */
    void addDanmaku(Danmaku danmaku);
    
    /**
     * 根据postId查找属于其的所有弹幕
     * @param postId 文章Id
     */
    List<Danmaku> getAllDanmakusByPost(String postId);
    

    
    /**
     * 添加一篇文章
     * @param post 新文章对象
     * @param pictureFile 缩略图文件（如果有）
     * @throws PostManagerException
     */
    void addPost(Post post, FileItem pictureFile) throws PostManagerException;

    
	/**
	 * 根据Id查找一篇文章
	 * @param postId 文章Id
	 */
    Post getPostById(String postId);
    
    /**
     * 根据标题查找一篇文章
     * @param title 文章标题
     */
    Post getPostByTitle(String title);
    
    /**
     * 根据类别查找文章
     * @param category 类别名称
     * @param sortSeed 排序依据
     * @param sortOrder "asc" = 升序，"desc" = 降序
     */
    List<Post> getAllPostsByCategory(String category, String sortSeed, String sortOrder);
    
    /**
     * 根据作者用户名查找文章
     * @param username 作者名
     * @param sortSeed 排序依据
     * @param sortOrder "asc" = 升序，"desc" = 降序
     */
    List<Post> getAllPostsByAuthor(String username, String sortSeed, String sortOrder);
    
    /**
     * 根据作者用户名以及类别来查找文章
     * @param username 作者名
     * @param category 类别名
     * @param sortSeed 排序依据
     * @param sortOrder "asc" = 升序，"desc" = 降序
     */
    List<Post> getAllPostsByAutAndCat(String username, String category, String sortSeed, String sortOrder);
    
    /**
     * 查找所有文章
     * @param sortSeed 排序依据
     * @param sortOrder "asc" = 升序，"desc" = 降序
     */
    List<Post> getAllPosts(String sortSeed, String sortOrder);
    
    



}
